package com.harmony.suppertiger.util;

import ohos.app.Context;

import java.lang.reflect.Field;

/**
 *
 * Created by Yaoyuanling on 2021/12/24.
 * 根据文件名称获取文件ID
 *
 * 比如你要获取Layout布局文件的ID，
 *
 * 假设布局文件为ability_main.xml，资源ID为ResourceTable.Layout_ability_main；
 *
 * 使用方法就是getIdentifier(getContext(), "Layout", "ability_main");
 *
 * 注意第二参数的大小写。
 */
public class Identifier {
    public  int getIdentifier(Context context, String type, String name) {
        String bundleName = context.getBundleName();
        String clazzName = bundleName + ".ResourceTable";
        String fileType = upCase(type);
        Class<?> clazz = null;
        try {
            clazz = Class.forName(clazzName);
            if (clazz != null) {
                Field field = clazz.getDeclaredField(fileType + "_" + name);
                field.setAccessible(true);
                return field.getInt(clazz);

            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return 0;
    }
    //获取首字母大写的文件类型
    public String upCase(String fileType){
        return fileType.substring(0,1).toUpperCase() + fileType.substring(1);
    }
}
